Java Control Flow Obfuscation
نویسنده
چکیده
The language Java was designed to be compiled into a platform independent bytecode format. Much of the information contained in the source code remains in the bytecode, which means that decompilation is easier than with traditional native codes. As a result, software developers are taking seriously the threat of competitors using reverse-engineering to extract proprietary algorithms from compiled Java programs. We examine several technical protection techniques that could be used to hinder the reverse-engineering of software. We claim that code obfuscation is the most suitable technical protection technique that can be applied to a portable language like Java. The technique of code obfuscation involves applying obfuscating transformations to a program. These transformations make the program more di cult for a reverse-engineer to understand but do not a ect the functionality of the program. We focus on a particular category of obfuscating transformations | control ow obfuscation. Control ow obfuscations disguise the algorithms used by a program by introducing new fake control ows, creating features at the object code level which have no source code equivalent or altering the way in which statements are grouped. There are many practical aspects to be considered when applying obfuscating transformations to Java programs. The fact that Java programs are portable and are veri ed before execution makes obfuscating transformations more di cult to apply. The veri cation stage ensures that programs do not perform illegal operations, such as corrupting a user's system. Obfuscating transformations can be applied automatically to a program by a tool called an obfuscator. In this thesis, we present one possible method of implementing such an obfuscator. We rst discuss the design decisions made to address implementation problems. Then, we use the obfuscator on examples of Java code and examine how e ective the obfuscating transformations are in impeding reverse-engineering.
منابع مشابه
Three control flow obfuscation methods for Java software
Three novel control computation (control flow) obfuscation methods are described for protecting Java class files. They are basic block fission obfuscation, intersecting loop obfuscation and replacing goto obfuscation. The basic block fission obfuscation splits some chosen basic block(s) into more basic blocks, in which opaque predicates and goto instructions are inserted to make decompiling uns...
متن کاملObfuscating Java: The Most Pain for the Least Gain
Software obfuscators are used to transform code so that it becomes more difficult to understand and harder to reverse engineer. Obfuscation of Java programs is particularly important since Java’s binary form, Java bytecode, is relatively high-level and susceptible to high-quality decompilation. The objective of our work is to develop and study obfuscation techniques that produce obfuscated byte...
متن کاملJava Bytecode Obfuscation
Programs written for machine execution will always be susceptible to information theft. This information can include trademarked algorithms, data embedded in the program, or even data the program accesses. As technology advances computer scientists are building more and more powerful tools for reverse-engineering such as decompilers. The Java programming language is particularly open to reverse...
متن کاملSelf-Protecting Mobile Agents Obfuscation Techniques Evaluation Report
This document presents an analysis of various program obfuscation techniques performed as part of the Self-Protecting Mobile Agents (SPMA) project. We have developed the Java Binary Enhancement Tool (JBET) to explore the real-world tradeoffs in translating and obfuscating Java bytecodes. We consider methods for obfuscating long-term data values, temporary data values, control flow, memory manag...
متن کاملBreaking Abstractions and Unstructuring Data Structures
To ensure platform independence, mobile programs are distributed in forms that are isomorphic to the original source code. Such codes are easy to decompile, and hence they increase the risk of malicious reverse engineering attacks. Code obfuscation is one of several techniques which has been proposed to alleviate this situation. An obfuscator is a tool which – through the application of code tr...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 1998